The Common Gateway Interface (CGI) is a standard for interfacing external applications with servers, such as web servers or HTTP servers. With CGI, a developer can write scripts that create interactive, user-driven applications. CGI enables a Web server to invoke an external program and pass user-specific data to the program. The program processes the data and generates a response. The server passes the program's response back to a client. CGI enables Web pages to be created dynamically, based upon the input of users rather than statically. CGI scripts have been used to interface databases with remote clients.
Another commonly employed technology for interfacing databases with remote clients is “servlets”. A servlet is akin to an applet that runs on a server. A servlet is an object that extends the functionality provided by a server. A servlet provides a component-based platform-independent method for building web-based applications, without the performance limitations of CGI programs.
Unfortunately, using CGI and/or servlets to generate reports from a database requires direct database access. As such, these technologies put a load on the associated database when a report is requested. The load can be substantial when multiple parties request the reports and can detract from other database management activities. Moreover, direct database access raises a number of security issues.